package online.longzipeng.sort;

import online.longzipeng.PrintUtils;

/**
 * @author lzp
 * @Date:2023/10/16
 * @description: 冒泡排序
 */
public class Sort2Bubble {

	/**
	 * 利用冒泡的特性，当我们需要从小到大排序时，我们可以从后往前冒泡，此时假如某一轮的数据没有移动，说明就排序好了
	 * 反之亦然
	 */
	public static void sort(int[] arr) {
		for (int i = arr.length - 1; i > 0; i--) {
			boolean flag = false;
			for (int j  = 0; j < i; j++) {
				if (arr[j] > arr[j+1]) {
					int temp = arr[j];
					arr[j] = arr[j+1];
					arr[j+1] = temp;
					flag = true;
				}
			}
			// 如果本轮没有交换，则直接结束循环
			if (!flag) {
				break;
			}
		}
	}

	public static void main(String[] args) {
		int arr[] = new int[]{1, 9, 2, 8, 4, 3, 5, 7, 6};
		System.out.println("排序前：");
		PrintUtils.printArr(arr);
		sort(arr);
		System.out.println("排序后：");
		PrintUtils.printArr(arr);
	}
}
